package cineplanet.modelo;

import java.io.Serializable;
import javax.persistence.*;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

/**
 * The persistent class for the venta database table.
 * 
 */
@Entity
@Table(name = "venta")
@NamedQueries({
		@NamedQuery(name = "Venta.findAll", query = "SELECT ve FROM Venta ve"),
		@NamedQuery(name = "Venta.findByIdVenta", query = "SELECT ve FROM Venta ve WHERE ve.idVenta = :idVenta"),
		@NamedQuery(name = "Venta.findByCantEntradas", query = "SELECT ve FROM Venta ve WHERE ve.cantEntradas = :cantEntradas"),
		@NamedQuery(name = "Venta.findByCargoServicio", query = "SELECT ve FROM Venta ve WHERE ve.cargoServicio = :cargoServicio"),
		@NamedQuery(name = "Venta.findByDescuento", query = "SELECT ve FROM Venta ve WHERE ve.descuento = :descuento"),
		@NamedQuery(name = "Venta.findByFechaVenta", query = "SELECT ve FROM Venta ve WHERE ve.fechaVenta = :fechaVenta"),
		@NamedQuery(name = "Venta.findBySubTotal", query = "SELECT ve FROM Venta ve WHERE ve.subTotal = :subTotal"),
		@NamedQuery(name = "Venta.findByTotal", query = "SELECT ve FROM Venta ve WHERE ve.total = :total"),

})
public class Venta implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Basic(optional = false)
	@Column(name = "idVenta")
	private Integer idVenta;
	@Column(name = "cantEntradas")
	private int cantEntradas;
	@Column(name = "cargoServicio")
	private Double cargoServicio;
	@Column(name = "descuento")
	private Double descuento;
	@Column(name = "subTotal")
	private Double subTotal;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fechaVenta")
	private Date fechaVenta;
	@Column(name = "total")
	private Double total;

	// bi-directional many-to-one association to Horario
	// @ManyToOne
	// @JoinColumn(name="idHorario")
	@JoinColumn(name = "idHorario", referencedColumnName = "idHorario")
	@ManyToOne(optional = false)
	private Horario idHorario;

	// bi-directional many-to-one association to Usuario
	// @ManyToOne
	// @JoinColumn(name="idUsuario")
	@JoinColumn(name = "idUsuario", referencedColumnName = "idUsuario")
	@ManyToOne(optional = false)
	private Usuario idUsuario;

	// bi-directional many-to-one association to VentaDetalle
	// @OneToMany(mappedBy="venta")
	// private Set<VentaDetalle> ventaDetalles;
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "idVenta")
	private Collection<VentaDetalle> ventaDetalleCollection=new ArrayList<VentaDetalle>();

	public Venta() {
	}

	public int getIdVenta() {
		return this.idVenta;
	}

	public void setIdVenta(int idVenta) {
		this.idVenta = idVenta;
	}

	public void setCantEntradas(int cantEntradas) {
		this.cantEntradas = cantEntradas;
	}

	public int getCantEntradas() {
		return cantEntradas;
	}

	public Double getCargoServicio() {
		return this.cargoServicio;
	}

	public void setCargoServicio(Double cargoServicio) {
		this.cargoServicio = cargoServicio;
	}

	public Double getDescuento() {
		return this.descuento;
	}

	public void setDescuento(Double descuento) {
		this.descuento = descuento;
	}

	public void setSubTotal(Double subTotal) {
		this.subTotal = subTotal;
	}

	public Double getSubTotal() {
		return subTotal;
	}

	public Date getFechaVenta() {
		return this.fechaVenta;
	}

	public void setFechaVenta(Date fechaVenta) {
		this.fechaVenta = fechaVenta;
	}

	public Double getTotal() {
		return this.total;
	}

	public void setTotal(Double total) {
		this.total = total;
	}

	public void setIdHorario(Horario idHorario) {
		this.idHorario = idHorario;
	}

	public Horario getIdHorario() {
		return idHorario;
	}

	public void setIdUsuario(Usuario idUsuario) {
		this.idUsuario = idUsuario;
	}

	public Usuario getIdUsuario() {
		return idUsuario;
	}

	public void setVentaDetalleCollection(Collection<VentaDetalle> ventaDetalleCollection) {
		this.ventaDetalleCollection = ventaDetalleCollection;
	}

	public Collection<VentaDetalle> getVentaDetalleCollection() {
		return ventaDetalleCollection;
	}

	@Override
	public int hashCode() {
		int hash = 0;
		hash += (idVenta != null ? idVenta.hashCode() : 0);
		return hash;
	}

	@Override
	public boolean equals(Object object) {
		// TODO: Warning - this method won't work in the case the id fields are
		// not set
		if (!(object instanceof Venta)) {
			return false;
		}
		Venta other = (Venta) object;
		if ((this.idVenta == null && other.idVenta != null)
				|| (this.idVenta != null && !this.idVenta.equals(other.idVenta))) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return "cineplanet.modelo.Venta[idVenta=" + idVenta + "]";
	}
}